package org.openxava.school.model; import javax.persistence.*; import org.openxava.annotations.*; @Entity public class Pupil { @Id @Column(length=2) @Required private int number; @Column(length=40) @Required private String name; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
@ManyToOne private Teacher teacher; public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; }
@ManyToOne @DescriptionsList private Teacher teacher;
package org.openxava.school.model; import javax.persistence.*; import org.openxava.annotations.*; @Entity public class Pupil { @Id @Column(length=2) @Required private int number; @Column(length=40) @Required private String name; @ManyToOne @DescriptionsList private Teacher teacher; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }
import java.util.*;
@OneToMany(mappedBy="teacher") private Collection<Pupil> pupils; public Collection<Pupil> getPupils() { return pupils; } public void setPupils(Collection<Pupil> pupils) { this.pupils = pupils; }
package org.openxava.school.model; import java.util.*; import javax.persistence.*; import org.openxava.annotations.*; @Entity public class Teacher { @Id @Column(length=5) @Required private String id; @Column(length=40) @Required private String name; @OneToMany(mappedBy="teacher") private Collection<Pupil> pupils; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Collection<Pupil> getPupils() { return pupils; } public void setPupils(Collection<Pupil> pupils) { this.pupils = pupils; } }
You need to enable Javascript in your browser to edit pages.
help on how to format text
Table of Contents
OpenXava 3 教程
欢迎开始使用OpenXava的短暂旅行。以下假定你已经启动了 OpenXava 中的Tomcat (已执行start-tomcat.sh o .bat) Eclipse 已打开,工作空间指向了 OpenXava下的workspace.
执行示例应用MySchool
OpenXava 发布中包含示例应用 MySchool,请按以下步骤执行。 任务执行中使用了ant targets. ant targets已经设定在Eclipse中, 要执行只需要点击 External Tools 按钮上的箭头修改示例应用MySchool
添加其他组件和模块
复制粘贴 src/org.openxava.school.model/Teacher.java 文件,重命名为Pupil.java.代码如下
然后可以将本文件发布.
所使用的ant targets used 已设定在Eclipse中, 要执行只需要点击 External Tools 按钮上的箭头
将学生(pupil)关联到教师(teacher)
要让pupil参照 teacher,非常简单. 添加下面的代码到 Pupil 类中 :现在可以测试一下:
- 执行ant target MySchool.deployWar
- 浏览 http://localhost:8080/MySchool/xava/module.jsp?application=MySchool&module=Pupil
你可以看到, 普通的清单式.如果你想让参照关系用下拉框的形式体现, 你需要添加 @DescriptionsList 到Pupil中的 teacher 参照:
请注意 @DescriptionsList 注解.
现在, 你的 Pupil 类如下:
重新发布:
- 执行 ant target MySchool.deployWar
- 浏览http://localhost:8080/MySchool/xava/module.jsp?application=MySchool&module=Pupil
现在我们将pupils 集合添加到teacher中. 首先, 添加下列包导入到Teacher类中:然后在类中加入集合声明:
修改后的Teacher class 如下:
再次发布:
执行MySchool应用的junit测试
切换到Eclipse 中的 MySchool 项目:- 指向 TeacherTest 类(in src/org.openxava.school.tests) 使用右键Run > JUnit Test
OpenXava junit测试在测试模块时就像一个真实的用户使用浏览器进行访问一样,所以可以将测试过程自动化。我鼓励你研究 TeachersTest 代码来搞清楚如何创建OpenXava测试。junit 测试对开发出高质量的应用程序是非常必要的。就到这里, 朋友们
在这个例子中,你可以可出,小的改变意味着小的努力,效果马上就能体现到表单上。
帮助
如果你想了解所有OpenXava特性,这远远超出了这个简单示例的范围。你需要看的是OpenXavaTest项目, 特别是 ox3-src/org.openxava.test.model 包。通过下面的链接,你可以获取本教程或者有关OpenXava 其他问题的帮助。
http://sourceforge.net/forum/forum.php?forum_id=419690
通过下列途径,你可以学到更多有关OpenXava的知识: